﻿using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace TestCanchitasServices
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod]
        public void TestObtenerCanchita()
        {
            //1. instanciar el objeto a probar
            CanchitasWS.CanchitasClient proxy = new CanchitasWS.CanchitasClient();

            //2. invocar el metodo con los argumentos a probar
            //2.1 crear una canchita dummy para modificar, en caso no existan datos en la base de datos.
            CanchitasWS.Canchita dummy = proxy.CrearCanchita("Canchita Creada","Dimensiones","Caracteristicas");

            //2.2 Obtener la canchita dummy creada en resultado
            CanchitasWS.Canchita resultado = proxy.ObtenerCanchita(dummy.Codigo);

            //3. realizar la(s) validacion(es)
            Assert.AreEqual(resultado.Nombre, "Canchita Creada");
            Assert.AreEqual(resultado.Dimensiones, "Dimensiones");
            Assert.AreEqual(resultado.Caracteristicas, "Caracteristicas");
            
            //4 Higiene: Eliminar los datos dummy de la BD
            proxy.EliminarCanchita(resultado.Codigo);
        }

        [TestMethod]
        public void TestCrearCanchita() 
        {
            //1. instanciar el objeto a probar
            CanchitasWS.CanchitasClient proxy = new CanchitasWS.CanchitasClient();

            //2. invocar el metodo con los argumentos a probar
            //2.1 crear una canchita dummy para modificar, en caso no existan datos en la base de datos.
            CanchitasWS.Canchita resultado = proxy.CrearCanchita("Canchita Creada", "Dimensiones", "Caracteristicas");

            //3. realizar la(s) validacion(es)
            Assert.AreEqual(resultado.Nombre, "Canchita Creada");
            Assert.AreEqual(resultado.Dimensiones, "Dimensiones");
            Assert.AreEqual(resultado.Caracteristicas, "Caracteristicas");
            
            //4 Higiene: Eliminar los datos dummy de la BD
            proxy.EliminarCanchita(resultado.Codigo);

        }

        [TestMethod]
        public void TestModificarAsesor()
        {
            //1. instanciar el objeto a probar
            CanchitasWS.CanchitasClient proxy = new CanchitasWS.CanchitasClient();

            //2. invocar el metodo con los argumentos a probar
            //2.1 crear una canchita dummy para modificar
            CanchitasWS.Canchita dummy = proxy.CrearCanchita("Canchita Creada", "Dimensiones", "Caracteristicas");

            //2.2 modifico la canchita dummy creada, con nuevos datos
            CanchitasWS.Canchita resultado = proxy.ModificarCanchita(dummy.Codigo, "Canchita modificada", "Dimensiones modificadas", "Caracteristicas modificadas");

            //3. realizar la(s) validacion(es)
            Assert.AreEqual(resultado.Nombre, "Canchita modificada");
            Assert.AreEqual(resultado.Dimensiones, "Dimensiones modificadas");
            Assert.AreEqual(resultado.Caracteristicas, "Caracteristicas modificadas");

            //4 Higiene: Eliminar los datos dummy de la BD
            proxy.EliminarCanchita(resultado.Codigo);
        }

        [TestMethod]
        public void TestEliminarAsesor()
        {
            //1. instanciar el objeto a probar
            CanchitasWS.CanchitasClient proxy = new CanchitasWS.CanchitasClient();

            //2. invocar el metodo con los argumentos a probar
            //2.1 crear una canchita dummy para Eliminar
            CanchitasWS.Canchita dummy = proxy.CrearCanchita("Canchita Creada", "Dimensiones", "Caracteristicas");

            //2.2 Eliminar los datos dummy de la BD
            proxy.EliminarCanchita(dummy.Codigo);

            //3. realizar la(s) validacion(es) : Si fue eliminado devolverá null
            Assert.IsNull(proxy.ObtenerCanchita(dummy.Codigo));
            
        }

        [TestMethod]
        public void TestListarAsesores()
        {
            //1. instanciar el objeto a probar
            CanchitasWS.CanchitasClient proxy = new CanchitasWS.CanchitasClient();

            //2. invocar el metodo con los argumentos a probar
            //2.1 Se crean 3 canchitas dummy, para verificar si la lista obtenida contiene 3 o mas canchitas(en el caso de ya existir datos en la BD).
            CanchitasWS.Canchita dummy1 = proxy.CrearCanchita("Canchita Creada 1", "Dimensiones", "Caracteristicas");
            CanchitasWS.Canchita dummy2 = proxy.CrearCanchita("Canchita Creada 2", "Dimensiones", "Caracteristicas");
            CanchitasWS.Canchita dummy3 = proxy.CrearCanchita("Canchita Creada 3", "Dimensiones", "Caracteristicas");

            //2.2 Obtiene la Lista de canchitas
            List<CanchitasWS.Canchita>  ListaResultado = proxy.ListarCanchitas();

            //3. realizar la(s) validacion(es)
            //3.1 Si se logró obtener la lista de canchitas la colecion no sera nula.
            Assert.IsNotNull(ListaResultado);
            //3.2 Si se Logró obtener el contenido de la lista, las siguientes validaciones lo confirmaran
            //Assert.IsTrue(ListaResultado.lenght >= 3); ya no es aplicable por que no es array sino list
            //Mejorar codigo de validacion

            //4 Higiene: Eliminar los datos dummy de la BD
            proxy.EliminarCanchita(dummy1.Codigo);
            proxy.EliminarCanchita(dummy2.Codigo);
            proxy.EliminarCanchita(dummy3.Codigo);
                  
        }

        [TestMethod]
        public void TestModificarAsesorSinCanchita()
        {
            //1. instanciar el objeto a probar
            CanchitasWS.CanchitasClient proxy = new CanchitasWS.CanchitasClient();

            //2. invocar el metodo con los argumentos a probar
            //2.1 crear una canchita dummy para modificar
            CanchitasWS.Canchita dummy = proxy.CrearCanchita("Canchita Creada", "Dimensiones", "Caracteristicas");

            //2.2 modifico la canchita dummy creada, con nuevos datos
            CanchitasWS.Canchita resultado = proxy.ModificarCanchita(dummy.Codigo, "Canchita modificada", "Dimensiones modificadas", "Caracteristicas modificadas");

            //3. realizar la(s) validacion(es), si no encuentra la canchita
            Assert.IsNull(resultado);
            

            //4 Higiene: Eliminar los datos dummy de la BD
            proxy.EliminarCanchita(resultado.Codigo);
        }
    }

    
}
